using UnityEngine;

//这段代码是一个Gear类，用于处理物品的属性和应用。
public class Gear : MonoBehaviour
{
    public ItemData.ItemType type; // 物品类型
    public float rate; // 比率

    public void Init(ItemData data)
    {
        // 基本设置
        name = "Gear " + data.itemId; // 设置物品名称
        transform.parent = GameManager.instance.player.transform; // 将物品的父物体设置为玩家对象
        transform.localPosition = Vector3.zero; // 将物品的本地坐标设置为零向量

        // 属性设置
        type = data.itemType; // 设置物品类型
        rate = data.damages[0]; // 选择第一个等级的伤害作为初始值
        ApplyGear(); // 应用物品属性
    }

    public void LevelUp(float rate)
    {
        this.rate = rate; // 更新比率
        ApplyGear(); // 应用物品属性
    }

    void ApplyGear()
    {
        switch (type)
        {
            case ItemData.ItemType.Glove:
                RateUp(); // 手套类型的物品增加攻击速率
                break;
            case ItemData.ItemType.Shoe:
                SpeedUp(); // 鞋子类型的物品增加玩家速度
                break;
        }
    }

    void RateUp()
    {
        Weapon[] weapons = transform.parent.GetComponentsInChildren<Weapon>(); // 获取所有子物体中的武器组件
        foreach (Weapon weapon in weapons)
        {
            switch (weapon.id)
            {
                case 0:
                    float speed = 150 * Character.WeaponSpeed;
                    weapon.speed = speed + speed * rate;
                    break;
                default:
                    speed = 0.5f * Character.WeaponRate;
                    weapon.speed = speed * (1f - rate);
                    break;
            }
        }
    }

    void SpeedUp()
    {
        float speed = 3.0f * Character.Speed; // 默认玩家速度
        GameManager.instance.player.speed = speed * (1.0f + rate); // 根据rate调整玩家速度
    }
}
